<?php


class Evento_model extends CI_Model
{
    private $id;
    private $local;
    private $data;
    private $nome;
    private $descricao;
    private $organizadores;
    private $lotes;
    private $imagem;


    public function  __construct($id = null, $instancia_lotes = TRUE)
    {
	parent::__construct();

	if ($id != null)
	{
	    $query = $this->db->get_where('evento', array('id_evento' => $id));

	    if ($query->num_rows() == 1) {
		$tmp = $query->row();

		$this->set_id((int)$tmp->id_evento);
		$this->set_data(DateTime::createFromFormat('Y-m-d', $tmp->data));
		$this->set_nome($tmp->nome);
		$this->set_descricao($tmp->descricao);
		$this->set_organizadores($tmp->organizadores);
		$this->set_imagem($tmp->imagem);

		require_once APPPATH . 'models/local_model.php';
		$this->set_local(new Local_model($tmp->id_local));

		$query_lotes = $this->db->get_where('lote', array('id_evento' => $id));

		$array_lotes = array();
		require_once APPPATH . 'models/lote_model.php';

		if ($instancia_lotes == TRUE)
		{
		    foreach($query_lotes->result() as $lote)
		    {
			$array_lotes[] = new Lote_model($lote->id_lote);
		    }

		    $this->set_lotes($array_lotes);
		}

	    } else {
		exit('Erro. Não foi possível criar a classe Evento_model');
	    }
	}
    }

    public function create()
    {
	$dados = array( 'nome'		=> $this->get_nome(),
			'data'		=> $this->get_data()->format('Y-m-d'),
			'descricao'	=> $this->get_descricao(),
			'organizadores' => $this->get_organizadores(),
			'id_local'	=> $this->get_local()->get_id(),
			'imagem'	=> $this->get_imagem()
		);

	return (bool) $this->db->insert('evento', $dados);
    }

    public function get_all()
    {
	$query = $this->db->get_where('evento');

	$ret = array();
	foreach($query->result() as $row)
	{
	    $ret[] = new Evento_model($row->id_evento);
	}

	return $ret;
    }

    public function get_id() {
	return $this->id;
    }

    public function set_id($id) {
	$this->id = $id;
    }

    public function get_nome() {
	return $this->nome;
    }

    public function set_nome($n) {
	$this->nome = $n;
    }

    public function get_local() {
	return $this->local;
    }

    public function set_local(Local_model $local) {
	$this->local = $local;
    }

    public function get_data() {
	return $this->data;
    }

    public function set_data(DateTime $d) {
	$this->data = $d;
    }

    public function get_descricao() {
	return $this->descricao;
    }

    public function set_descricao($d) {
	$this->descricao = $d;
    }

    public function get_organizadores() {
	return $this->organizadores;
    }

    public function set_organizadores($o) {
	$this->organizadores = $o;
    }

    public function get_lotes() {
	return $this->lotes;
    }

    public function set_lotes(array $o) {
	$this->lotes = $o;
    }

    public function get_imagem() {
	return $this->imagem;
    }

    public function set_imagem($s) {
	$this->imagem = $s;
    }
}